home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Windows Selection / Windows Selection 1.iso / Programmer's Utilities / Freeman Installer / ictrller.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-04-10  |  8.4 KB  |  301 lines

  1. #define __ICTRLLER_H
  2.  
  3.  
  4. #ifndef __SAINT_H
  5. #include "saint.h"
  6. #endif
  7. #ifndef __OPRDR_H
  8. #include "oprdr.h"
  9. #endif
  10. #ifndef __ICONOBJ_H
  11. #include "iconobj.h"
  12. #endif
  13. #ifndef __USERWND_H
  14. #include "userwnd.h"
  15. #endif
  16. #ifndef __INSTALLR_H
  17. #include "installr.h"
  18. #endif
  19.  
  20. class fimd;
  21.  
  22. class iinfo;
  23.  
  24. class dcontext;
  25.  
  26. class cthelpobj;
  27.  
  28.  
  29. class ictrller;
  30.  
  31. class bkwndobj:public userwnd
  32. {
  33.    ictrller *ic;
  34.  
  35.    public:
  36.  
  37.    enum
  38.    {
  39.       idexit = 101, idhelp = 102, idminz = 103
  40.    };
  41.  
  42.    void setic(ictrller *icx)
  43.    {
  44.       ic = icx;
  45.    }
  46.  
  47.    LRESULT onmsg(UINT msg, WPARAM wp, LPARAM lp);
  48. };
  49.  
  50. class icwndobj:public userwnd
  51. {
  52.    ictrller *ic;
  53.  
  54.    public:
  55.  
  56.    void setic(ictrller *icx)
  57.    {
  58.       ic = icx;
  59.    }
  60.  
  61.    LRESULT onmsg(UINT msg, WPARAM wp, LPARAM lp);
  62. };
  63.  
  64. class bkbtn;
  65.  
  66. class bkgauge;
  67.  
  68. class linelist;
  69.  
  70. class fioptnode;
  71.  
  72. class ictrller
  73. {
  74.    friend icwndobj;
  75.    friend bkwndobj;
  76.  
  77.    typedef int (ictrller::*mergefunc)(linelist &dstls, char srcl[], char addl[], int i);
  78.  
  79.    int createicwnd();
  80.    int createbkwnd();
  81.    int copysubtree(fioptnode *i2nmap[], int k);
  82.    void paint();
  83.    void drawbktxts(dcontext &dc);
  84.    void drawnotice(dcontext &dc);
  85.    void drawgradient(dcontext &dc, RECT &r);
  86.  
  87.    public:
  88.  
  89.  
  90.    class ffr01                                                 /* file frame01 */
  91.    {
  92.       public:
  93.  
  94.       int xfer;                                 /* 0 -- decompress   1 -- copy */
  95.       int uninst;                                /* 0 -- uninstall   1 -- none */
  96.       int create;                                 /* 0 -- create   1 -- append */
  97.       int isff;                             /* is a font file to be installed? */
  98.       int cond;/* 0 -- none  1 -- ver info  2 -- INI ver  3 -- time  4 -- size */
  99.       LONG size;
  100.       char desc[128];
  101.       char disk[128];
  102.       stcpath srcpath;
  103.       stcpath dstpath;
  104.    };
  105.  
  106.    class ffr02                                                 /* file frame02 */
  107.    {
  108.       public:
  109.  
  110.       int ismustexist;
  111.       char desc[128];
  112.       stcpath srcpath;
  113.       stcpath dstpath;
  114.    };
  115.  
  116.    class ffr03                                                 /* file frame03 */
  117.    {
  118.       public:
  119.  
  120.       char desc[128];
  121.  
  122.       stcpath path;
  123.    };
  124.  
  125.    class ffr04                                                 /* file frame04 */
  126.    {
  127.       public:
  128.  
  129.       int amode;        /* 0 -- quietly  1 -- advise before  2 -- advise after */
  130.       char desc[128];
  131.       stcpath path;
  132.    };
  133.  
  134.    class cfr00                                               /* component info */
  135.    {
  136.       public:
  137.  
  138.       int isleaf;
  139.       int isxcl;                                     /* exclusive to siblings? */
  140.       int isinichk;                                     /* initial check state */
  141.       int isenable;                                               /* enability */
  142.       int isinisks;                               /* is it expanded initially? */
  143.       char name[80];                                         /* component name */
  144.       char desc[256];                                 /* component description */
  145.    };                                        
  146.  
  147.    class ifr00                                                 /* PM item info */
  148.    {
  149.       public:
  150.  
  151.       int iidx;
  152.       char name[80];
  153.       char grup[80];
  154.       char cmdl[512];
  155.       stcpath icon;
  156.       stcpath dirw;
  157.    };
  158.  
  159.    class efr00                                               /* INI entry info */
  160.    {
  161.       public:
  162.  
  163.       int dmode;/* duplicate mode. 0 -- set  1 -- add if diff  2 -- always add */
  164.       char sect[128];
  165.       char entry[128];
  166.       char value[512];
  167.       stcpath file;
  168.    };
  169.  
  170.    class rfr00                                                 /* reg key info */
  171.    {
  172.       public:
  173.  
  174.       int kroot;
  175.       char kpath[256];
  176.       char field[256];
  177.       char sz[2048];
  178.       DWORD vtype;
  179.       DWORD dw;
  180.    };
  181.  
  182.    class tfr00                                         /* background text info */
  183.    {
  184.       public:
  185.  
  186.       int x;                          /* x, y, width, height in 0.1% of screen */
  187.       int y;
  188.       int h;
  189.       int w;
  190.       int effect;                           /* 0 -- none  1 -- 3D  2 -- shadow */
  191.       int isbold;
  192.       int isitalic;
  193.       char txt[128];
  194.       char fnt[128];
  195.       COLORREF c;
  196.    };
  197.  
  198.    class welstruct                                    /* welcome dlg structure */
  199.    {
  200.       public:
  201.  
  202.       char line1[256];
  203.       char line2[256];
  204.       char line3[256];
  205.       char line4[256];
  206.       char line5[256];
  207.    };
  208.  
  209.    class psstruct                                   /* prompt string structure */
  210.    {
  211.       public:
  212.  
  213.       int ctid;
  214.       int isdir;
  215.       int ischkspace;
  216.       int minspace;
  217.       char s[256];
  218.       char def[256];
  219.       char line1[256];
  220.       char line2[256];
  221.       char line3[256];
  222.       char line4[256];
  223.    };
  224.  
  225.    public:
  226.  
  227.    ictrller();                  /* we must call init() after it is constructed */
  228.  
  229.    virtual ~ictrller();
  230.  
  231.    int doneret;                                         /* the ret fron done() */
  232.    int oldemode;                                        /* original error mode */
  233.    int ispending;                    /* need to reboot to replace in-use files */
  234.    int isdossyschged;               /* was autoexec.bat or config.sys changed? */
  235.    int iswinsyschged;                               /* was system.ini changed? */
  236.    char appname[60];                                        /* cached app name */
  237.    saint ics;                                    /* is the component selected? */
  238.    saint ifs;                                         /* is the file selected? */
  239.    saint iis;                                         /* is the item selected? */
  240.    saint ies;                                        /* is the entry selected? */
  241.    saint irs;                                      /* is the reg key selected? */
  242.    iinfo *ii;                                       /* custom install info obj */
  243.    bkbtn *btns[3];                                                /* 3 buttons */
  244.    double spaceneeded;                               /* hard disk space needed */
  245.    stcpath dirs;                                   /* install source directory */
  246.    iconobj icon;                                   /* icon used by icon window */
  247.    bkgauge *g;                                                    /* gauge dlg */
  248.    oprdrini rdr;                                     /* INI operation recorder */
  249.    icwndobj icwnd;                                              /* icon window */
  250.    bkwndobj bkwnd;                                        /* background window */
  251.    installer ir;                                                  /* installer */
  252.  
  253.    /* return: 0 --- ok. stay in Windows           1 --- error           */
  254.    /*         2 --- ok. restart Windows           3 --- ok. quit to dos */
  255.    /*         4 --- ok. restart DOS                                     */
  256.    virtual int run()              = 0;
  257.  
  258.    int init(abspath &dirs);                  /* must be called to init the obj */
  259.    int done();
  260.    int askquit();
  261.    int welcome(welstruct &b);
  262.    int dofiles();
  263.    int askuser(int issaveexe, int issaveini);
  264.    int modconfig();
  265.    int setregkeys();
  266.    int modautoexec();
  267.    int promptyn(char line1[], char line2[], char line3[], int ctid);
  268.    int promptstr(psstruct &b);
  269.    int searchfile(abspath &startdir, abspath &filespec, int isinclsub, varpath *path = 0);
  270.    int searchfile(abspath &startdir, abspath &filespec, int isinclsub, varpath *path, fimd *md);
  271.    int getdoneret();
  272.    int createitems();
  273.    int selectcomps();
  274.    int setinientries();
  275.    int setinientriessimple();
  276.    int getspaceneeded();
  277.    int chkcompselected(int cidx);
  278.    int forceexist(char disk[], abspath &path);
  279.    int askinsertdisk(char disk[]);
  280.    int moddos(int iscfig);
  281.    int mergecfig(char dstl[], char srcl[], char addl[]);
  282.    int mergeauto(char dstl[], char srcl[], char addl[]);
  283.    int chkminz();
  284.    int map2reg(efr00 &ei);
  285.    int mklogdir();
  286.    int tryclose(abswndobj &w);
  287.    int chkpathst(char s[], char paths[]);
  288.    int initgadget(int i, int x, int y);
  289.    void free();                              /* must be called to free the obj */
  290.    void error(char fmt[], ...);
  291.    void errormem();
  292.    void movelog();
  293.    void cleanup();
  294.    void freerdr();
  295.    void getdirsrc(varpath *d);
  296.    void maxzbkwnd();
  297.    void minzbkwnd();
  298.    void freegadgets();
  299. };
  300.  
  301.